Software-defined networking (SDN) is an approach to computer networking that allows network administrators to manage network services through abstraction of lower-level functionality. This is done by decoupling the system that makes decisions about where traffic is sent from the underlying systems that forward traffic to the selected destination.
An SDN controller is an application in SDN that manages flow control to enable intelligent networking. SDN controllers are based on protocols that allow servers to tell switches where to send packets. The SDN controller is the core of an SDN network. It lies between network devices at one end and applications at the other end. Any communications between applications and devices have to go through the SDN controller. The SDN controller also uses protocols to configure network devices and choose the optimal network path for application traffic. In effect, the SDN controller serves as a sort of operating system (OS) for the network. By taking the control plane off the network hardware and running it as software instead, the SDN controller facilitates automated network management and makes it easier to integrate and administer business applications.